// app.js
App({
  onLaunch() {
    // 展示本地存储能力
    const logs = wx.getStorageSync('logs') || []
    logs.unshift(Date.now())
    wx.setStorageSync('logs', logs)

    // 自动微信登录
    this.autoLogin();
  },

  // 自动登录
  autoLogin() {
    // 先检查是否已经登录
    const userInfo = wx.getStorageSync('userInfo');
    if (userInfo && userInfo.nickName) {
      console.log('用户已登录:', userInfo.nickName);
      this.globalData.userInfo = userInfo;
      return;
    }

    // 未登录，尝试自动获取用户信息
    wx.getSetting({
      success: (res) => {
        if (res.authSetting['scope.userInfo']) {
          // 已经授权，可以直接获取用户信息
          wx.getUserInfo({
            success: (userRes) => {
              this.handleLoginSuccess(userRes.userInfo);
            },
            fail: (err) => {
              console.log('获取用户信息失败:', err);
              this.handleLoginFail();
            }
          });
        } else {
          // 未授权，需要用户手动授权
          console.log('用户未授权，需要手动登录');
          this.handleLoginFail();
        }
      },
      fail: (err) => {
        console.log('获取授权设置失败:', err);
        this.handleLoginFail();
      }
    });
  },

  // 处理登录成功
  handleLoginSuccess(userInfo) {
    const loginInfo = {
      nickName: userInfo.nickName,
      avatarUrl: userInfo.avatarUrl,
      level: '新手',
      loginTime: Date.now()
    };
    
    wx.setStorageSync('userInfo', loginInfo);
    this.globalData.userInfo = loginInfo;
    
    console.log('自动登录成功:', loginInfo.nickName);
    
    // 通知页面登录状态变化
    this.notifyLoginStatusChange(true);
  },

  // 处理登录失败
  handleLoginFail() {
    console.log('自动登录失败，需要手动登录');
    this.globalData.userInfo = null;
    
    // 通知页面登录状态变化
    this.notifyLoginStatusChange(false);
  },

  // 通知页面登录状态变化
  notifyLoginStatusChange(isLoggedIn) {
    // 获取当前页面栈
    const pages = getCurrentPages();
    if (pages.length > 0) {
      const currentPage = pages[pages.length - 1];
      // 如果当前页面有更新登录状态的方法，则调用
      if (currentPage.updateLoginStatus) {
        currentPage.updateLoginStatus(isLoggedIn);
      }
    }
  },

  // 手动登录
  manualLogin() {
    return new Promise((resolve, reject) => {
      wx.getUserProfile({
        desc: '用于完善用户资料',
        success: (res) => {
          this.handleLoginSuccess(res.userInfo);
          resolve(res.userInfo);
        },
        fail: (err) => {
          console.log('手动登录失败:', err);
          this.handleLoginFail();
          reject(err);
        }
      });
    });
  },

  // 退出登录
  logout() {
    wx.removeStorageSync('userInfo');
    this.globalData.userInfo = null;
    
    console.log('用户已退出登录');
    
    // 通知页面登录状态变化
    this.notifyLoginStatusChange(false);
  },

  globalData: {
    userInfo: null
  }
})
